iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 23
0
自我挑戰組

golang初探系列 第 23

day23-Goroutine

  • 分享至 

  • xImage
  •  

golang 支持多併發,這個章節我們來講如何使用 goroutine 來執行多併發

GO

使用 go 關鍵字來執行 func

example1

範例中無法看到 "Hello, playground" 字串的原因
要執行 Hello func 時是 main func 已經結束

package main

import (
	"fmt"
)

func Hello() {
	fmt.Println("Hello, playground")
}

func main() {
	go Hello()
	fmt.Println("main")
}

example2

將 main func 增添 time.Sleep ,故意延遲 main func 執行時間
這時我們可以看到 "Hello, playground" 字串有列印出來了

package main

import (
	"fmt"
	"time"
)

func Hello() {
	fmt.Println("Hello, playground")
}

func main() {
	go Hello()
	time.Sleep(1 * time.Second)
	fmt.Println("main")
}

example3

使用 sync.waitgroup 讓主線程等待協程完成

package main

import (
	"fmt"
	"sync"
)

func Hello(wg *sync.WaitGroup) {
	for i := 0; i <= 100; i++ {
		fmt.Println("Hello, playground", i)
	}

	defer wg.Done()
}

func main() {
	var wg sync.WaitGroup
	wg.Add(1)
	go Hello(&wg)
	fmt.Println("main")
	wg.Wait()
}


上一篇
day22-Error
下一篇
day24-Channel 介紹
系列文
golang初探30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言